Finding the Next Open Slot

Load Factor and Resizing


load factor α = n/m은 원소 수를 표 길이로 나눈 값으로, 표가 얼마나 찼는지를 나타낸다. α가 커지면 충돌과 조사 길이가 늘어나므로 크기 재할당(resize)으로 더 큰 표를 만들고, 모든 키의 인덱스를 새 표 길이로 다시 계산한다.

load factor αn / m이며 표가 찬 비율이다.
재할당 기준구현마다 다르므로 하나의 숫자를 모든 해시테이블의 규칙으로 쓰지 않는다.
재배치기존 칸 위치를 복사하지 않고 모든 키를 새 표에 다시 넣는다.

load factor가 커질수록 빈 칸이 줄고 다음 저장 위치를 찾기 어려워진다

넣은 키 수와 예시 기준을 바꾸면 α, 빈 칸 수, 재할당이 필요한지가 바뀐다. 표 길이는 m = 8이다.

칸 위 숫자는 인덱스다. 파란 칸은 키가 든 칸, 점선 칸은 빈 칸이며, 빨간 점선 칸은 기준을 넘긴 뒤에 넣은 키다.

표 길이가 바뀌면 모든 키의 인덱스를 다시 계산한다

표 길이를 바꾸면 키 6, 10, 14의 k mod m과, 앞 칸이 차 있으면 다음 칸으로 넘어가는 저장 위치가 바뀐다.

위 줄은 표이며 파란 칸이 저장된 키다. 아래 표는 키마다 시작 인덱스 k mod m과 실제 저장 인덱스이며, 두 값이 다르면 앞 칸이 차 있어 다음 칸으로 넘어간 것이다.